package com.yyy.common.util;

import com.yyy.entity.Message;

import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

/**
 * @author com.yyy
 * @Date 2020-09-12 16:14
 * @Email yangyouyuhd@163.com
 */
public class ReflectUtil {
    public static String getMsgGenericClazzName(Method method, Integer index) {
        Type[] types = method.getGenericParameterTypes();
        // 强转子类
        ParameterizedType typeImpl = (ParameterizedType) types[index];
        // 比较形参类型 和 指定实体类型
        if (typeImpl.getRawType() == Message.class) {
            // 泛型一般就一个、获取第一个用户指定的
            Type genericType = typeImpl.getActualTypeArguments()[0];
            // 获取泛型类的全路径名
            String genericName = genericType.getTypeName();
            return genericName;
        }
        return null;
    }
}
